A communication system that uses a shared medium contains a number of devices called “nodes” that are capable of sending and receiving data via a shared medium. The shared medium provides a limited amount of bandwidth, part or whole of which may be used for transmission by any one of the nodes. An example of a data communication system that uses a shared medium is a wireless LAN (Local Area Network). A wireless LAN system contains nodes that are located near one another and are capable of sending and receiving wireless electromagnetic communication signals. Thus the shared medium is the electromagnetic field in the local area where the nodes are located. The bandwidth in this medium may be divided in time-intervals and different frequency channels. Only one node at a time can transmit in a frequency channel. Other examples of such media are cables or optical fibers over which more than one node can send or receive data.
In a communication system that uses a shared medium some mechanism is needed to ensure that the available bandwidth is shared by the nodes. Conventional mechanisms provide for fixed bandwidth allocation and for contention based bandwidth allocation.
In a fixed bandwidth allocation mechanism each nodes is permitted to use a predetermined part of the bandwidth, for example a periodically recurring time-slot. This mechanism is particularly useful for transmitting data streams which need “Quality of Service”, that is, a guaranteed minimum data rate per unit time, for example audio and video data streams with data that has to be rendered real time at the speed at which it is received. The fixed bandwidth allocation mechanism is rather wasteful when a node needs to transmit data only incidentally. In this case much of the allocated bandwidth may be left unused.
In a contention based bandwidth allocation mechanism all nodes may attempt to use the same part of the bandwidth. This mechanism is a “best effort” mechanism that allows each particular node to use as much of the bandwidth as is left over by other nodes, as far as needed by the particular node. Each node attempts to use the bandwidth only when it needs to transmit data. Some mechanism is provided for resolving conflicts, when more than one node attempts to use the same part of the bandwidth. This mechanism provides for a more efficient use of the available bandwidth when the nodes need to transmit data only incidentally.
Contention based bandwidth allocation mechanisms have been applied widely in modern computer systems, for example in PC's (Personal Computers). It is very easy to interface an application program to such an allocation mechanism. The application program simply supplies data to a communication program which takes care of the contention mechanism. There exists an enormous number of application programs that makes use of such communication.
However, by itself a contention based bandwidth allocation mechanism does not ensure that any node can provide Quality of Service (transmit data at a guaranteed rate per unit time). At a time when too many nodes attempt to transmit too much data a node may get too little bandwidth to provide Quality of Service. Conventionally, therefore, if one or more of the application programs need Quality of Service a conventional fixed bandwidth allocation mechanism must be used, but this leads to waste of bandwidth when other application programs supply data only incidentally, as is the case for most existing application programs.